home *** CD-ROM | disk | FTP | other *** search
Wrap
## -*-Tcl-*- # ################################################################### # HTML mode - tools for editing HTML documents # # FILE: "htmlEntities.tcl" # created: 98-02-15 18.04.08 # last update: 00-12-23 21.05.17 # Author: Johan Linde # E-mail: <alpha_www_tools@go.to> # www: <http://go.to/alpha_www_tools> # # Version: 3.0 # # Copyright 1996-2001 by Johan Linde # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # ################################################################### ## #=============================================================================== # ◊◊◊◊ Character entities ◊◊◊◊ # #=============================================================================== proc htmlEntities.tcl {} {} proc html::AddCommonChars {} { global HTMLmodeVars html::SmallCharsMenu html::CapitalCharsMenu global html::OtherChars1Menu html::OtherChars2Menu set commonChars $HTMLmodeVars(commonChars) set pick [lremove -l [concat ${html::SmallCharsMenu} ${html::CapitalCharsMenu} ${html::OtherChars1Menu} ${html::OtherChars2Menu}] $commonChars] regsub -all ! $pick "" pick1 if {![catch {listpick -l -p "Select chars for the commonly used char list" \ $pick1} newchars] && $newchars != ""} { foreach c $newchars { if {[lcontains pick $c]} { lappend commonChars $c } else { lappend commonChars "!$c" } } set commonChars [lsort $commonChars] prefs::modifiedModeVar commonChars HTML set HTMLmodeVars(commonChars) $commonChars menu::buildSome "Character Entities" message "New characters added to the common list." } } proc html::RemoveCommonChars {} { global HTMLmodeVars set commonChars $HTMLmodeVars(commonChars) if {![catch {listpick -l -p "Select chars to remove from the commonly used char list" \ $commonChars} chars] && $chars != ""} { set commonChars [lremove -l $commonChars $chars] prefs::modifiedModeVar commonChars HTML set HTMLmodeVars(commonChars) $commonChars menu::buildSome "Character Entities" message "Characters removed from the common list." } } # # Insert special character entity # proc html::InsertCharacter {char} { global html::SpecialCharacter html::CapCharSpecMenu if {[isSelection]} { deleteSelection } foreach c [list SpecialCharacter CapCharSpecMenu] { if {[info exists html::${c}($char)]} { insertText &[set html::${c}($char)]\; return } } } proc html::SetEntityKeys {meny} { global html::SmallCharsMenu html::CapitalCharsMenu html::OtherChars1Menu html::OtherChars2Menu html::PrefsFolder if {[file exists [file join ${html::PrefsFolder} "HTML entity keys"]]} {source [file join ${html::PrefsFolder} "HTML entity keys"]} set allkeys [set html::[join $meny ""]Menu] foreach key $allkeys { set dkey $key if {[string index $key 0] == "!"} { set dkey "[string index $key 1] [set key [string range $key 2 end]]" } if {[info exists htmlEntityKeys($key)]} { lappend keys [list $htmlEntityKeys($key) $dkey] } else { lappend keys [list {} $dkey] } } bind::fromArray htmlEntityKeys htmlEntityKeysProc 1 HTML if {[eval dialog::adjustBindings [list $meny] newkeys modified 0 $keys] != "Cancel"} { foreach key $modified { set dkey $key if {[lcontains allkeys "![string index $key 0][string range $key 2 end]"]} { set dkey [string range $key 2 end] } if {$newkeys($key) == ""} {unset htmlEntityKeys($dkey) htmlEntityKeysProc($dkey); continue} set htmlEntityKeys($dkey) $newkeys($key) set htmlEntityKeysProc($dkey) [list html::InsertCharacter $dkey] } } bind::fromArray htmlEntityKeys htmlEntityKeysProc 0 HTML html::SaveCache "HTML entity keys" "array set htmlEntityKeys [list [array get htmlEntityKeys]]\rarray set htmlEntityKeysProc [list [array get htmlEntityKeysProc]]" } proc html::NewCharVar {var val} { global html::SpecialCharacter html::CharacterSpecial set html::SpecialCharacter($var) $val set html::CharacterSpecial($val) $var } proc html::NewCapCharVar {var men val} { global html::SpecialCharacter html::CharacterSpecial html::CapCharSpecMenu set html::SpecialCharacter($var) $val set html::CharacterSpecial($val) $var set html::CapCharSpecMenu($men) $val } set html::SmallCharsMenu {eth thorn à á â ã ä å æ ç è é ê ë ì í î ï ñ ò ó ô õ ö ø œ ù ú û ü y´ ÿ} html::NewCharVar "ß" szlig html::NewCharVar "à" agrave html::NewCharVar "á" aacute html::NewCharVar "â" acirc html::NewCharVar "ã" atilde html::NewCharVar "ä" auml html::NewCharVar "å" aring html::NewCharVar "æ" aelig html::NewCharVar "ç" ccedil html::NewCharVar "è" egrave html::NewCharVar "é" eacute html::NewCharVar "ê" ecirc html::NewCharVar "ë" euml html::NewCharVar "ì" igrave html::NewCharVar "í" iacute html::NewCharVar "î" icirc html::NewCharVar "ï" iuml set html::CapCharSpecMenu(eth) eth html::NewCharVar "ñ" ntilde html::NewCharVar "ò" ograve html::NewCharVar "ó" oacute html::NewCharVar "ô" ocirc html::NewCharVar "õ" otilde html::NewCharVar "ö" ouml html::NewCharVar "ø" oslash html::NewCharVar "ù" ugrave html::NewCharVar "ú" uacute html::NewCharVar "û" ucirc html::NewCharVar "ü" uuml set html::CapCharSpecMenu(y´) yacute set html::CapCharSpecMenu(thorn) thorn html::NewCharVar "ÿ" yuml html::NewCharVar "œ" "#339" set html::CapitalCharsMenu {ETH THORN À A´ A^ Ã Ä Å Æ Ç E` É E^ E¨ I` I´ I^ I¨ Ñ O` O´ O^ Õ Ö Ø Œ U` U´ U^ Ü Y´ Y¨} html::NewCapCharVar "À" "À" Agrave html::NewCapCharVar "Á" "A´" Aacute html::NewCapCharVar "Â" "A^" Acirc html::NewCapCharVar "Ã" "Ã" Atilde html::NewCapCharVar "Ä" "Ä" Auml html::NewCapCharVar "Å" "Å" Aring html::NewCapCharVar "Æ" "Æ" AElig html::NewCapCharVar "Ç" "Ç" Ccedil html::NewCapCharVar "È" "E`" Egrave html::NewCapCharVar "É" "É" Eacute html::NewCapCharVar "Ê" "E^" Ecirc html::NewCapCharVar "Ë" "E¨" Euml html::NewCapCharVar "Ì" "I`" Igrave html::NewCapCharVar "Í" "I´" Iacute html::NewCapCharVar "Î" "I^" Icirc html::NewCapCharVar "Ï" "I¨" Iuml set html::CapCharSpecMenu(ETH) ETH html::NewCapCharVar "Ñ" "Ñ" Ntilde html::NewCapCharVar "Ò" "O`" Ograve html::NewCapCharVar "Ó" "O´" Oacute html::NewCapCharVar "Ô" "O^" Ocirc html::NewCapCharVar "Õ" "Õ" Otilde html::NewCapCharVar "Ö" "Ö" Ouml html::NewCapCharVar "Ø" "Ø" Oslash html::NewCapCharVar "Ù" "U`" Ugrave html::NewCapCharVar "Ú" "U´" Uacute html::NewCapCharVar "Û" "U^" Ucirc html::NewCapCharVar "Ü" "Ü" Uuml set html::CapCharSpecMenu(Y´) Yacute set html::CapCharSpecMenu(THORN) THORN html::NewCapCharVar "Œ" "Œ" "#338" html::NewCapCharVar "Ÿ" "Y¨" "#376" set "html::CapCharSpecMenu(quotation mark)" quot set html::CapCharSpecMenu(ampersand) amp set "html::CapCharSpecMenu(less than)" lt set "html::CapCharSpecMenu(greater than)" gt set "html::CapCharSpecMenu(nonbreak space)" nbsp html::NewCapCharVar "¡" "inverted excl. mark" "#161" html::NewCapCharVar "¢" cent "#162" html::NewCapCharVar "£" pound "#163" html::NewCapCharVar "€" currency "#164" html::NewCapCharVar "¥" yen "#165" html::NewCapCharVar "\\|" "broken bar" "#166" html::NewCapCharVar "§" "section sign" "#167" html::NewCapCharVar "¨" diearesis "#168" html::NewCapCharVar "©" "copyright sign" copy html::NewCapCharVar "ª" "feminine ordinal ind." "#170" html::NewCapCharVar "«" "left double angle" "#171" html::NewCapCharVar "¬" "not sign" "#172" set "html::CapCharSpecMenu(soft hyphen)" "#173" html::NewCapCharVar "®" "registered sign" reg html::NewCapCharVar "¯" macron "#175" html::NewCapCharVar "°" degree "#176" html::NewCapCharVar "±" "plus-minus" "#177" set "html::CapCharSpecMenu(superscript two)" "#178" set "html::CapCharSpecMenu(superscript three)" "#179" html::NewCapCharVar "´" "acute accent" "#180" html::NewCapCharVar "µ" "micro sign" "#181" html::NewCapCharVar "¶" "paragraph sign" "#182" html::NewCapCharVar "·" "middle dot" "#183" html::NewCapCharVar "¸" cedilla "#184" set "html::CapCharSpecMenu(superscript one)" "#185" html::NewCapCharVar "º" "masculine ordinal ind." "#186" html::NewCapCharVar "»" "right double angle" "#187" set "html::CapCharSpecMenu(one quarter)" "#188" set "html::CapCharSpecMenu(one half)" "#189" set "html::CapCharSpecMenu(three quarters)" "#190" html::NewCapCharVar "¿" "inverted question mark" "#191" set html::CapCharSpecMenu(times) "#215" html::NewCapCharVar "÷" divide "#247" html::NewCapCharVar "–" "en dash" "#8211" html::NewCapCharVar "—" "em dash" "#8212" html::NewCapCharVar "‘" "left single quotation" "#8216" html::NewCapCharVar "’" "right single quotation" "#8217" html::NewCapCharVar "‚" "single low quotation" "#8218" html::NewCapCharVar "“" "left double quotation" "#8220" html::NewCapCharVar "”" "right double quotation" "#8221" html::NewCapCharVar "„" "double low quotation" "#8222" html::NewCapCharVar "†" dagger "#8224" html::NewCapCharVar "‡" "double dagger" "#8225" html::NewCapCharVar "‰" "per mille sign" "#8240" html::NewCapCharVar "‹" "left single angle" "#8249" html::NewCapCharVar "›" "right single angle" "#8250" html::NewCapCharVar "ƒ" florin "#402" html::NewCapCharVar "•" bullet "#8226" html::NewCapCharVar "…" ellipsis "#8230" html::NewCapCharVar "™" "trade mark sign" "#8482" html::NewCapCharVar "√" "square root" "#8730" html::NewCapCharVar "∞" infinity "#8734" html::NewCapCharVar "∫" integral "#8747" html::NewCapCharVar "≈" "approximately equal to" "#8776" html::NewCapCharVar "≠" "not equal to" "#8800" html::NewCapCharVar "≤" "less-than or equal" "#8804" html::NewCapCharVar "≥" "greater-than or equal" "#8805" set html::OtherChars1Menu {ampersand {greater than} {less than} {!≤less-than or equal} {!≥greater-than or equal} {!≈approximately equal to} {!≠not equal to} {nonbreak space} {!"quotation mark} {!“left double quotation} {!”right double quotation} {!‘left single quotation} {!’right single quotation} {!‚single low quotation} {!„double low quotation} {!«left double angle} {!»right double angle} {!‹left single angle} {!›right single angle} {!¿inverted question mark} {!¡inverted excl. mark} {!ªfeminine ordinal ind.} {!ºmasculine ordinal ind.} {superscript one} {superscript two} {superscript three} {!®registered sign} {!©copyright sign} {!™trade mark sign} !°degree {!|broken bar}} set html::OtherChars2Menu {!€currency !¢cent !£pound !¥yen !ƒflorin {!´acute accent} !¨diearesis !¸cedilla {!§section sign} {!¶paragraph sign} {soft hyphen} {!–en dash} {!—em dash} {one half} {one quarter} {three quarters} {!‰per mille sign} !…ellipsis !¯macron {!·middle dot} !•bullet !†dagger {!‡double dagger} {!µmicro sign} {!¬not sign} !±plus-minus !÷divide times {!√square root} !∞infinity !∫integral} rename html::NewCharVar "" rename html::NewCapCharVar ""